//
// Created by twetec on 25-5-28.
//

#ifndef NETWORK_PROBER_LOGGER_DEBUG_LOGGER_H
#define NETWORK_PROBER_LOGGER_DEBUG_LOGGER_H

namespace spdlog
{
class logger;
}

namespace network_prober::logger
{
class DebugLogger
{
public:
    void init();                       // 初始化
    static DebugLogger &getInstance(); // 获取实例

private:
    DebugLogger();  // 构造函数私有化
    ~DebugLogger(); // 析构函数私有化

    DebugLogger(const DebugLogger &) = delete;            // 禁用默认拷贝构造函数（初始化赋值时调用）
    DebugLogger &operator=(const DebugLogger &) = delete; // 禁用默认拷贝赋值（初始化后，再赋值时调用）

    DebugLogger(DebugLogger &&) = delete;            // 针对右值
    DebugLogger &operator=(DebugLogger &&) = delete; // 针对右值

private:
    std::shared_ptr<spdlog::logger> m_logger{nullptr};
};
}

#endif //NETWORK_PROBER_LOGGER_DEBUG_LOGGER_H
